/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.enums.TipoAla;
import br.com.foxinline.modelo.Arquivo;
import br.com.foxinline.modelo.Pessoa;
import br.com.foxinline.modelo.Protocolo;
import br.com.foxinline.servico.ArquivoServico;
import br.com.foxinline.servico.ProtocoloServico;
import br.com.foxinline.util.Msg;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

/**
 *
 * @author ely
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarArquivo {

    @EJB
    ArquivoServico arquivoServico;
    @EJB
    ProtocoloServico protocoloServico;
    private Arquivo arquivoEditar;
    private Arquivo arquivoVisualizar;
    private Arquivo arquivoPesquisar;
    private String ePro;
    private String vArquivo;
    private Protocolo protocolo;
    private Protocolo protocoloPesquisar;
    private List<Protocolo> protocolos;
    private Pessoa pessoaPesquisar;
    private Protocolo protocoloExcluir;
    private String numeroProtocolo;

    @PostConstruct
    public void init() {

        protocoloPesquisar = new Protocolo();
        pessoaPesquisar = new Pessoa();
        arquivoPesquisar = new Arquivo();

        Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        ePro = params.get("ePro");
        vArquivo = params.get("vArquivo");
        paramPost();

    }

    public void pesquisar() {
        protocoloPesquisar.setCliente(pessoaPesquisar);
        protocoloPesquisar.setEtiqueta(arquivoPesquisar);
        protocolos = protocoloServico.pesquisarProtocoloArquivo(protocoloPesquisar);
    }

    public void setUsuariorr(Protocolo prot) {
        this.protocoloExcluir = prot;

    }

    public void paramPost() {
        try {
            if (ePro != null) {
                protocolo = protocoloServico.pesquisar(Long.parseLong(ePro));
                arquivoEditar = protocolo.getEtiqueta() != null ? protocolo.getEtiqueta() : new Arquivo();
            }
            if (vArquivo != null) {
                protocolo = protocoloServico.pesquisar(Long.parseLong(vArquivo));
                arquivoVisualizar = protocolo.getEtiqueta() != null ? protocolo.getEtiqueta() : new Arquivo();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void atualizar() {
        try {
            arquivoServico.atualizar(arquivoEditar);
            Msg.messagemInfo(Msg.SuccessFull);
        } catch (Exception erro) {
            erro.printStackTrace();
            Msg.messagemError(Msg.Failure);
        }
    }

    public void excluir() {
        try {
            protocolos.remove(protocoloExcluir);
            protocoloExcluir.setEtiqueta(null);
            protocoloServico.atualizar(protocoloExcluir);
            Msg.messagemInfo(Msg.SuccessFull);
        } catch (Exception erro) {
            erro.printStackTrace();
            Msg.messagemError(Msg.Failure);
        }
    }

    public List<SelectItem> getTipoAla() {
        List<SelectItem> items = new ArrayList<SelectItem>();
        for (TipoAla tipo : TipoAla.values()) {
            items.add(new SelectItem(tipo, tipo.getNome()));
        }
        return items;
    }

    public String formantarDataProtocolo(Protocolo p) {
        if (p.getDataProtocolo() != null) {
            return new SimpleDateFormat("dd/MM/yyyy").format(p.getDataProtocolo());
        }
        return null;
    }
    
    public String numeroProtocolo() {

        if (protocolo != null && protocolo.getNumero() != null) {
            String numero = String.valueOf(protocolo.getNumero());
            String ano = numero.substring(numero.length() - 4);
            numero = numero.substring(0, numero.length() - 4);
            return String.format("%05d", Integer.parseInt(numero)).concat("/").concat(ano);
        }

        return null;
    }

    public Protocolo getProtocolo() {
        return protocolo;
    }

    public void setProtocolo(Protocolo protocolo) {
        this.protocolo = protocolo;
    }

    public Protocolo getProtocoloPesquisar() {
        return protocoloPesquisar;
    }

    public void setProtocoloPesquisar(Protocolo protocoloPesquisar) {
        this.protocoloPesquisar = protocoloPesquisar;
    }

    public List<Protocolo> getProtocolos() {
        return protocolos;
    }

    public void setProtocolos(List<Protocolo> protocolos) {
        this.protocolos = protocolos;
    }

    public Arquivo getArquivoEditar() {
        return arquivoEditar;
    }

    public void setArquivoEditar(Arquivo arquivoEditar) {
        this.arquivoEditar = arquivoEditar;
    }

    public Arquivo getArquivoPesquisar() {
        return arquivoPesquisar;
    }

    public void setArquivoPesquisar(Arquivo arquivoPesquisar) {
        this.arquivoPesquisar = arquivoPesquisar;
    }

    public Arquivo getArquivoVisualizar() {
        return arquivoVisualizar;
    }

    public void setArquivoVisualizar(Arquivo arquivoVisualizar) {
        this.arquivoVisualizar = arquivoVisualizar;
    }

    public String getNumeroProtocolo() {
        return numeroProtocolo;
    }

    public void setNumeroProtocolo(String numeroProtocolo) {
        this.numeroProtocolo = numeroProtocolo;
    }
}
